package com.yc.dao;

import java.util.List;
import java.util.Map;

import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;

/**
 *	基础操作
 * @param <M>：基本类（Person,Product...）
 * @param <PK>：基本类中的主键类型（String,Double,Integer...）
 */
public interface BaseDaoHib <M extends java.io.Serializable , PK extends java.io.Serializable> {
	
	public PK save(M model);
	
	public void saveOrUpdate(M model);
	
	public void update(M model);
	
	public List<M> findByExample(M model);
	
	public List<M> findByCriterion(Criterion criterion,Order order,Integer offset,Integer length);
	
	public List<M> findByProperty(Map<String, Object> param,int offset,int length);
	
	public void merge(M model);
	
	public void delete(PK id);
	
	public boolean exists(PK id);
	
	public M get(PK id);
	
	public List<M> getAll();
	
	public long countAll();

}
